[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
dependencies = [
  "scikit-learn>=1.1.0,<2.0.0",
  "pandas>=1.5.0,<3.0.0",
  "openai>=1.2.0,<2.0.0",
  "tqdm>=4.60.0,<5.0.0",
  "google-cloud-aiplatform[pipelines]>=1.27.0,<2.0.0"
]
name = "scikit-llm"
version = "1.0.0"
authors = [
  { name="Oleh Kostromin", email="kostromin97@gmail.com" },
  { name="Iryna Kondrashchenko", email="iryna230520@gmail.com" },
]
description = "Scikit-LLM: Seamlessly integrate powerful language models like ChatGPT into scikit-learn for enhanced text analysis tasks."
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.9"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.optional-dependencies]
gpt4all = ["gpt4all>=2.0.0,<3.0.0"]
annoy = ["annoy>=1.17.2,<2.0.0"]

[tool.ruff]
select = [
    # pycodestyle
    "E",
    # pyflakes
    "F",
    # pydocstyle
    "D",
    # flake8-bandit
    "S",
    # pyupgrade
    "UP",
    # pep8-naming
    "N",
]
# Error E501 (Line too long) is ignored because of docstrings.
ignore = [
    "S101",
    "S301",
    "S311",
    "D100",
    "D200",
    "D203",
    "D205",
    "D401",
    "E501",
    "N803",
    "N806",
    "D104",
]
extend-exclude = ["tests/*.py", "setup.py"]
target-version = "py39"
force-exclude = true

[tool.ruff.per-file-ignores]
"__init__.py" = ["E402", "F401", "F403", "F811"]

[tool.ruff.pydocstyle]
convention = "numpy"

[tool.mypy]
ignore_missing_imports = true

[tool.black]
preview = true
target-version = ['py39', 'py310', 'py311']

[tool.isort]
profile = "black"
filter_files = true
known_first_party = ["skllm", "skllm.*"]
skip = ["__init__.py"]

[tool.docformatter]
close-quotes-on-newline = true # D209

[tool.pytest.ini_options]
pythonpath = [
  "."
]
